drm/i915/cmdparser: Ignore Length operands during command matching
authorJon Bloomfield <jon.bloomfield@intel.com>
Thu, 20 Sep 2018 16:45:10 +0000 (09:45 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 19 Nov 2019 01:43:33 +0000 (01:43 +0000)
commitbb68a769697a7c50141cad28d34fddbfe6bfe858
treecdf0fae908882ad40c3e86d4fbc1f5406cff74d5
parent143d03a4407f44c3b8a5233f51f63bfa04365aed
drm/i915/cmdparser: Ignore Length operands during command matching

commit 926abff21a8f29ef159a3ac893b05c6e50e043c3 upstream.

Some of the gen instruction macros (e.g. MI_DISPLAY_FLIP) have the
length directly encoded in them. Since these are used directly in
the tables, the Length becomes part of the comparison used for
matching during parsing. Thus, if the cmd being parsed has a
different length to that in the table, it is not matched and the
cmd is accepted via the default variable length path.

Fix by masking out everything except the Opcode in the cmd tables

Cc: Tony Luck <tony.luck@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Tyler Hicks <tyhicks@canonical.com>
Signed-off-by: Jon Bloomfield <jon.bloomfield@intel.com>
Reviewed-by: Chris Wilson <chris.p.wilson@intel.com>
Gbp-Pq: Topic bugfix/x86/i915
Gbp-Pq: Name 0010-drm-i915-cmdparser-Ignore-Length-operands-during-com.patch
drivers/gpu/drm/i915/i915_cmd_parser.c